package com.sinoglobal.wallet.app;

import java.util.Map;
import android.content.Context;
import com.sinoglobal.wallet.util.SharedPreferenceUtil;

/**
 * Created by KeZhuang on 2015/6/11.
 */
public class SinoValueManager {
    private static Map<String, Object> sMap;
    private static SinoValueManager instance;
    static{
        sMap = SinoApplication.getMap();
    }
    public static SinoValueManager getInstance() {
        if (instance == null) {
            synchronized (SinoValueManager.class) {
                if (instance == null) instance = new SinoValueManager();
            }
        }
        return instance;
    }
    
    /**
     * 取值<Br>优先Application中取值,如果取不到就从SharedPreference中取值
     * @param context 上下文
     * @param key 存值时候的key
     * @param defaultObject 默认值,取不到值的时候会返回这个
     * @return
     */
    public static Object getValue(Context context,String key,Object defaultObject){
        Object object;
        if(key==null){
            return null;
        }
        if(sMap.containsKey(key)){
            object = sMap.get(key);
            return object;
        }
        if(SharedPreferenceUtil.contains(context, key)){
            object = SharedPreferenceUtil.get(context, key, defaultObject);
            return object;
        }
        object = defaultObject;
        return object;
    }

    /**
     * 存值 SharedPreference和Application都会存一遍
     * @param context 上下文对象
     * @param key 存值用的key
     * @param value 需要存得值
     * @param isAddSP 是否添加到SharedPreference中 true添加,false不添加
     */
    public static void putValue(Context context,String key,Object value,boolean isAddSP){
        sMap.put(key, value);
        if(isAddSP){
            SharedPreferenceUtil.put(context, key, value);
        }
    }

    /**
     * 清除所有数据
     * @param isSp 是否清除SharedPreference里边的数据
     */
    public static void clearValue(Context context,boolean isSp){
        sMap.clear();
        if(isSp){
            SharedPreferenceUtil.clear(context);
        }
    }
    
 	/**
 	 * @Description: 根据key删除数据
 	 * @param context 上下文对象
 	 * @param key 删除对象Key
 	 */
    public static void removeValue(Context context,String key){
		SharedPreferenceUtil.remove(context, key);
    }
    /**
     * @Description: 获取存入SharedPreference的UserID
     * @param context
     * @return
     */
    public static String getUserId(Context context){
    	String object;
    
    	if(SharedPreferenceUtil.contains(context, SinoConstans.KEY_USER_ID)){
            object = (String) SharedPreferenceUtil.get(context, SinoConstans.KEY_USER_ID, "");
            return object;
        }
    	return "";
    }
    /**
     * @Description: 获取存入SharedPreference的手机号
     * @param context
     * @return
     */
    public static String getUserPhone(Context context){
    	String object;
    	
    	if(SharedPreferenceUtil.contains(context, SinoConstans.KEY_Phone)){
    		object = (String) SharedPreferenceUtil.get(context, SinoConstans.KEY_Phone, "");
    		return object;
    	}
    	return null;
    }
    /**
     * @Description: 获取存入SharedPreference的ProductID
     * @param context
     * @return
     */
    public static String getProductID(Context context){
    	String object;
    	
    	if(SharedPreferenceUtil.contains(context, SinoConstans.KEY_PRODUCT_ID)){
    		object = (String) SharedPreferenceUtil.get(context, SinoConstans.KEY_PRODUCT_ID, "");
    		return object;
    	}
    	return null;
    }

public void setIdProductPhone(Context context, String user_id,String product_id,String phone){
	
	SinoValueManager.putValue(context, SinoConstans.KEY_USER_ID, user_id, true);
	SinoValueManager.putValue(context, SinoConstans.KEY_PRODUCT_ID, product_id, true);
	SinoValueManager.putValue(context, SinoConstans.KEY_Phone, phone, true);
}
public void clearIdProductPhone(Context context){
	
	SinoValueManager.putValue(context, SinoConstans.KEY_USER_ID, "", true);
	SinoValueManager.putValue(context, SinoConstans.KEY_PRODUCT_ID, "", true);
	SinoValueManager.putValue(context, SinoConstans.KEY_Phone, "", true);
}
}
